1. Field of the Invention
The present invention relates to session management systems and methods that enable users of two-way electronic messaging systems, such as SMS (Short Messaging System), Email or IM (Instant Messaging), to simultaneously interact with multiple applications. The invention has particular, although not exclusive, application to simultaneously linking users with SMS-enabled mobile devices to multiple web-based applications.
2. Description of Related Art
Short Message Service (SMS) or “text messaging” was initially implemented as a “back channel,” for cellular telephone carriers, for signaling a cellular telephone of events such as voice mail. SMS later became used as a mechanism for users to send short messages (in text format) to each other. As of late, SMS is being used in a business-consumer model to “push” content (advertisements, coupons and ring tones) to consumers.
However, the use of SMS in more sophisticated applications is limited because SMS does not support a generic and flexible session management system. This is a byproduct of the fact that SMS was originally intended as a one way messaging system. While, SMS was later extended to allow simple responses, full session management functionality was never added to it. As a result SMS does not provide a way for applications to maintain ongoing discussions or sessions with a user over multiple, out-of-sequence message exchanges.
The lack of a flexible session-management system hinders the development of fully interactive SMS data applications. The core problem is that inter- and intra-application state cannot be properly managed by present message routing/application integration systems in the art without placing an undue burden on either users or application developers.
Two major techniques have been developed, to enable “interesting” applications over SMS: Keyword routing systems and Address routing systems. Both methods do not provide the flexibility that we desire.
Keyword routing systems use the contents of a user's message to maintain state/session information. Users wishing to send messages to specific applications or to invoke specific actions on applications must type in enough information into their messages in order to uniquely identify the application or the action on the application to invoke. For example, user messages beginning with “GAME1” can be routed to the GAME1 application and messages beginning with “GAME2” can be routed to the GAME2 application. Similarly, it is possible to invoke specific actions on an application by combining an application ID and an action ID. So, for example, users messages beginning with “GAME1:ACTION1.” can be routed to Action1 action in the GAME1 application. Keyword routing systems place an undue burden on consumers by requiring them to remember and type in keywords for every response they send an application. This is not a trivial task given the form factors of mobile devices. Because these systems place a heavy burden on users, they can cause significant user confusion and errors.
Address based routing systems use different addresses to encode state/session information. Applications are assigned a set of reply-to-addresses. Then, applications use these addresses to encode state/session information. For example, an application may know that incoming responses to ADDR1 invoke a callback 1 and incoming responses to ADDR2 invoke a callback 2 and so forth. Address based routing systems place an undue burden on application providers. When using an address based routing system, application developers must maintain state utilizing the application's set of assigned “reply-to” addresses. This requires application developers to assign “reply-to” addresses for each message they generate and properly associate the correct action with the various possible replies to this message. Further, they have to implement policies for how long to persist these associations and when and how to reuse a previously used address. These policies are non-trivial and when implemented incorrectly may cause user confusion or place applications in awkward states. Further, these systems use the total address space inefficiently because applications must be assigned a set of addresses in advance so they can be developed appropriately. So while a user may only use ten applications his whole address spaces is allocated to all the applications registered with the address routing system.
It would, therefore, be desirable to provide a system and method that overcomes the above problems and others.